<?php
/**
 * @desc Class administration du module
 * */
 class MenuNavManager extends Manager
 {
    
    /**
     * @desc construit les var
     * */
    public function __construct($paramClass)
    {
       parent::__construct($paramClass);
    } 
    
    /**
    * @desc supprime la cache du menu
    * @return void 
    */
    private function setDeleteCache()
    {
        $this->smarty->cache->clear(IMMOPHP_ROOT_PATH . 'design/bloc_menu_navigation.tpl');
    }
    
    
    /**
     * @desc monte la ligne du menu, 0 est la position la plus haute
     * @param $ligne_id : ligne sur laquelle agir
     * @param $position : position de la ligne actuelle
     * @return void
     * */
    public function setUp($ligne_id, $position)
    {
        $this->session->csrf_check_get(true);
        
        $position_a_descendre = $position - 1;
        
        $this->db->sql_query("UPDATE immo_menu_navigation SET ordre = ordre + 1 WHERE ordre = '". $position_a_descendre ."'");    // On descent la ligne dessus, pour quelle prenne la position de la ligne a monter
        
        $this->db->sql_query("UPDATE immo_menu_navigation SET ordre = ordre - 1 WHERE id = '". $ligne_id ."'");                   // On monte la ligne de + 1
        
        $this->printErrorMessage($this->lang['Menu_mise_a_jour']);
        
        $this->setDeleteCache();
    }
    
    /**
     * @desc descent la ligne du menu, 0 est la position la plus haute
     * @param $ligne_id : ligne sur laquelle agir
     * @param $position : position de la ligne actuelle
     * @return void
     * */
    public function setDown($ligne_id, $position)
    {
        $this->session->csrf_check_get(true);
        
        $position_a_monter = $position + 1;
        
        $this->db->sql_query("UPDATE immo_menu_navigation SET ordre = ordre - 1 WHERE ordre = '". $position_a_monter ."'");
        
        $this->db->sql_query("UPDATE immo_menu_navigation SET ordre = ordre + 1 WHERE id = '". $ligne_id ."'");   
        
        $this->printErrorMessage($this->lang['Menu_mise_a_jour']); 
        
        $this->setDeleteCache();
    }
    
    /**
    * Ajouter dans la base un nouveau lien
    * 
    */
    public function setAdd()
    {
        
        if(!$titre = retrieve('POST','titre',true))
            $this->_errorMessage .= 'No title for link <br />';
            
        if(!$lien = retrieve('POST','lien',true))
            $this->_errorMessage .= 'No adress for link <br />';
            
        $description = retrieve('POST','description');
        $ordre = retrieve('POST','ordre');
        
        if(!$this->_errorMessage)
        {
            // Enregistrement dans la base
            $QueryArray = array(
            'titre' =>  $titre,
            'lien'  =>  $lien,
            'ordre' =>  $ordre,
            'actif' =>  '1',
            'description'   =>  addslashes($description),
            );
            
            $this->db->sql_query(CreateQueryInsert($QueryArray, 'immo_menu_navigation'));   // Enregistrement dans la base
            
            $this->setDeleteCache();                                                        // Desctuction du cache
            
            $this->printErrorMessage($this->lang['Ligne_ajoutee_au_menu']);                 // Affichage message action
        }
        else
            $this->printErrorMessage($this->_errorMessage, 'warning');
        
    }
    
    /**
    * Supprime la ligne du menu
    * 
    */
    public function setDelete()
    {
        $this->session->csrf_check_get(true);
        
        $ligne_id = retrieve('GET', 'id');
        
        if( is_numeric($ligne_id) )
        {
            $this->db->sql_query("DELETE FROM immo_menu_navigation WHERE id = '" . (int)$ligne_id . "'"); 
            
            $this->setDeleteCache(); 
            
            $this->printErrorMessage($this->lang['Ligne_supprimee_du_menu']);
        }
        else
        {
            $this->printErrorMessage('Invalid format', 'fatal');    
        }
    }
 }
 